home *** CD-ROM | disk | FTP | other *** search
-
-
-
- SSSSOOOOCCCCKKKKEEEETTTT((((2222)))) SSSSOOOOCCCCKKKKEEEETTTT((((2222))))
-
-
-
- NNNNAAAAMMMMEEEE
- socket - create an endpoint for communication
-
- CCCC SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- ####iiiinnnncccclllluuuuddddeeee <<<<ssssyyyyssss////ttttyyyyppppeeeessss....hhhh>>>>
- ####iiiinnnncccclllluuuuddddeeee <<<<ssssyyyyssss////ssssoooocccckkkkeeeetttt....hhhh>>>>
- iiiinnnntttt ssssoooocccckkkkeeeetttt((((iiiinnnntttt ddddoooommmmaaaaiiiinnnn,,,, iiiinnnntttt ttttyyyyppppeeee,,,, iiiinnnntttt pppprrrroooottttooooccccoooollll))));;;;
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- _S_o_c_k_e_t creates an endpoint for communication and returns a descriptor.
-
- The _d_o_m_a_i_n parameter specifies a communications domain within which
- communication will take place; this selects the protocol family which
- should be used. The protocol family generally is the same as the address
- family for the addresses supplied in later operations on the socket.
- These families are defined in the include file <_s_y_s/_s_o_c_k_e_t._h>. The
- currently understood formats are:
-
- PF_INET (DARPA Internet protocols)
- PF_RAW (Link-level protocols)
- PF_UNIX (4.3BSD UNIX internal protocols)
- The formats PF_NS (Xerox Network Systems protocols) and PF_IMPLINK (IMP
- link layer) are not implemented.
-
- The socket has the indicated _t_y_p_e, which specifies the semantics of
- communication. Currently implemented types are:
-
- SOCK_STREAM
- SOCK_DGRAM
- SOCK_RAW
-
- A SOCK_STREAM type provides sequenced, reliable, two-way connection based
- byte streams. An out-of-band data transmission mechanism may be
- supported. A SOCK_DGRAM socket supports datagrams (connectionless,
- unreliable messages of a fixed (typically small) maximum length).
- SOCK_RAW sockets, which are available only to the super-user, provide
- access to internal network protocols and interfaces. The types
- SOCK_SEQPACKET and SOCK_RDM are currently unimplemented.
-
- The _p_r_o_t_o_c_o_l specifies a particular protocol to be used with the socket.
- Normally only a single protocol exists to support a particular socket
- type within a given protocol family. However, it is possible that many
- protocols may exist, in which case a particular protocol must be
- specified in this manner. The protocol number to use is particular to
- the "communication domain" in which communication is to take place; see
- _g_e_t_p_r_o_t_o_e_n_t(3N).
-
- Sockets of type SOCK_STREAM are full-duplex byte streams, similar to
- pipes. A stream socket must be in a _c_o_n_n_e_c_t_e_d state before any data may
- be sent or received on it. A connection to another socket is created
- with a _c_o_n_n_e_c_t(2) call. Once connected, data may be transferred using
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- SSSSOOOOCCCCKKKKEEEETTTT((((2222)))) SSSSOOOOCCCCKKKKEEEETTTT((((2222))))
-
-
-
- _r_e_a_d(2) and _w_r_i_t_e(2) calls or some variant of the _s_e_n_d(2) and _r_e_c_v(2)
- calls. Note that for the _r_e_a_d and _r_e_c_v-style calls, the number of bytes
- actually read may be less than the number requested. When a session has
- been completed a _c_l_o_s_e(2) may be performed. Out-of-band data may also be
- transmitted as described in _s_e_n_d(2) and received as described in _r_e_c_v(2).
-
- The communications protocols used to implement a SOCK_STREAM insure that
- data is not lost or duplicated. If a piece of data for which the peer
- protocol has buffer space cannot be successfully transmitted within a
- reasonable length of time, then the connection is considered broken and
- calls will indicate an error with -1 returns and with ETIMEDOUT as the
- specific code in the global variable errno. The protocols optionally
- keep sockets "warm" by forcing transmissions roughly every minute in the
- absence of other activity. An error is then indicated if no response can
- be elicited on an otherwise idle connection for a extended period (e.g. 5
- minutes). A SIGPIPE signal is raised if a process sends on a broken
- stream; this causes naive processes, which do not handle the signal, to
- exit.
-
- SOCK_DGRAM and SOCK_RAW sockets allow sending of datagrams to
- correspondents named in _s_e_n_d(2) calls. Datagrams are generally received
- with _r_e_c_v_f_r_o_m(2), which returns the next datagram with its return
- address.
-
- An _f_c_n_t_l(2) call can be used to specify a process group to receive a
- SIGURG signal when the out-of-band data arrives. The FIONBIO i/o control
- (see _i_o_c_t_l(2)) or the FNDELAY fcntl (see _f_c_n_t_l(2)) enable non-blocking
- I/O and asynchronous notification of I/O events via SIGIO.
-
- The operation of sockets is controlled by socket level _o_p_t_i_o_n_s. These
- options are defined in the file <_s_y_s/_s_o_c_k_e_t._h>. _s_e_t_s_o_c_k_o_p_t(2) and
- _g_e_t_s_o_c_k_o_p_t(2) are used to set and get options, respectively.
-
- RRRREEEETTTTUUUURRRRNNNN VVVVAAAALLLLUUUUEEEE
- A -1 is returned if an error occurs, otherwise the return value is a
- descriptor referencing the socket.
-
- EEEERRRRRRRROOOORRRRSSSS
- The _s_o_c_k_e_t call fails if:
-
- [EPROTONOSUPPORT] The protocol type or the specified protocol is
- not supported within this domain.
-
- [EMFILE] The per-process descriptor table is full.
-
- [ENFILE] The system file table is full.
-
- [EACCESS] Permission to create a socket of the specified
- type and/or protocol is denied.
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
- SSSSOOOOCCCCKKKKEEEETTTT((((2222)))) SSSSOOOOCCCCKKKKEEEETTTT((((2222))))
-
-
-
- [ENOBUFS] Insufficient buffer space is available. The
- socket cannot be created until sufficient
- resources are freed.
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- accept(2), bind(2), connect(2), fcntl(2), getsockname(2), getsockopt(2),
- ioctl(2), listen(2), read(2), recv(2), select(2), send(2), socketpair(2),
- write(2), inet(7F), raw(7F), unix(7F)
-
- NNNNOOOOTTTTEEEE
- ABI-compliant versions of the above calls can be obtained from
- _l_i_b_s_o_c_k_e_t._s_o.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 3333
-
-
-
-